/**
 * @description:  是否为数组
 */
export function isArray(val) {
	return val && Array.isArray(val);
}

/**
 * @description 处理值无数据情况
 * @param {*} callValue 需要处理的值
 * @returns {String}
 * */
export function formatValue(callValue) {
	// 如果当前值为数组，使用 / 拼接（根据需求自定义）
	if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--";
	return callValue ?? "-";
}

/**
 * @description 根据枚举列表查询当需要的数据（如果指定了 label 和 value 的 key值，会自动识别格式化）
 * @param {String} value 当前单元格值
 * @param {Array} enumData 字典列表
 * @returns {String}
 * */
export function filterEnum(value, enumData) {
	let filterData = {};
	// 判断 enumData 是否为数组
	if (Array.isArray(enumData)) filterData = findItemNested(enumData, value);
	return filterData ? filterData.label : "-";
}

/**
 * @description 递归查找 value 对应的 enum 值
 * */
export function findItemNested(enumData, value) {
	return enumData.reduce((cur, next) => {
		if (cur) return cur;
		if (next.value === value) return next;
		if (next.children) return findItemNested(next.children, value);
	}, null);
}

// 过滤参数无效字段
const valid = value => {
	if (Array.isArray(value) && !value.length) {
		return false;
	} else if (!value && value !== 0 && value !== false) {
		return false;
	}
	return true;
};

export function getValidKey(object) {
	const data = {};
	for (const key in object) {
		const value = object[key];
		if (valid(value)) {
			data[key] = value;
		}
	}
	return data;
}

// 表格操作列prop
export const COLUMN_OPERATE_PROP = "operation"
